#ifndef INT_SHCEME_BDF_COEFF_HPP
#define INT_SHCEME_BDF_COEFF_HPP

#include <array>

namespace IntScheme {
struct BDFCoeff {
  static constexpr int minP = 1;
  static constexpr int maxP = 4;
  static constexpr int s[] = {1, 2, 3, 4};
  static constexpr int offset[] = {0, 2, 5, 9};
  // save from a_n to a_{n-s}
  static constexpr std::array<double, 14> alpha = {
      1,        -1,        1, -4.0 / 3,   1.0 / 3,   1,          -18.0 / 11,
      9.0 / 11, -2.0 / 11, 1, -48.0 / 25, 36.0 / 25, -16.0 / 25, 3.0 / 25};
  // save from b_n to b_{n-s}
  static constexpr std::array<double, 14> beta = {1, 0, 2.0 / 3,   0, 0, 6.0 / 11, 0,
                                    0, 0, 12.0 / 25, 0, 0, 0,        0};
};
} // namespace IntScheme

#endif